perm filename EXERPT[8,ALS] blob
sn#046197 filedate 1973-06-05 generic text, type T, neo UTF8
00010 INTEGER PROCEDURE UPDATE;
00020 BEGIN "UPDATE"
00030
00040 COMMENT This procedure both smooths and spreads the output values
00050 as reported in the last 3 bits in the values stored in TABLES.
00060 This output is reported in addition to the actual ratio output
00070 which is now moved over 3 bits.
00080 This routine works only for P tables;
00090
00100 COMMENT SIG must be fixed before this can be used;
00110
00120 INTEGER I,J,K,L,M,N,P,Q,Z;
00130 INTEGER GOOD,BAD,SUM,PLACE;
00140 INTEGER ARRAY PAD[0:64];
00150
00160
00170 FOR I←STXX+10 STEP 74 UNTIL STX-64 DO BEGIN
00180 P←0;
00190
00200 FOR J←0 STEP 1 UNTIL 7 DO
00210 FOR K←0 STEP 1 UNTIL 7 DO BEGIN
00220 N←J*8+K;
00230 GOOD←POINT(15,TABLES[I+N],29);
00240 L←LDB(GOOD);
00250 BAD←POINT(15,TABLES[I+N],14);
00260 Z←L+LDB(BAD);
00270 PLACE←POINT(3,TABLES[I-9],5);
00280 IF PLACE=2 THEN BEGIN
00290
00300 L←L LSH 3; Z←Z LSH 3;
00310
00320 IF J>0 THEN BEGIN
00330 GOOD←POINT(15,TABLES[I+N-8],29); L←L+LDB(GOOD);
00340 BAD←POINT(15,TABLES[I+N-8],14); Z←Z+LDB(BAD)+LDB(GOOD); END;
00350
00360 IF J<7 THEN BEGIN
00370 GOOD←POINT(15,TABLES[I+N+8],29); L←L+LDB(GOOD);
00380 BAD←POINT(15,TABLES[I+N+8],14); Z←Z+LDB(BAD)+LDB(GOOD); END;
00390
00400 IF K>0 THEN BEGIN
00410 GOOD←POINT(15,TABLES[I+N-1],29); L←L+LDB(GOOD);
00420 BAD←POINT(15,TABLES[I+N-1],14); Z←Z+LDB(BAD)+LDB(GOOD); END;
00430
00440 IF K<7 THEN BEGIN
00450 GOOD←POINT(15,TABLES[I+N+1],29); L←L+LDB(GOOD);
00460 BAD←POINT(15,TABLES[I+N+1],14); Z←Z+LDB(BAD)+LDB(GOOD); END;
00470
00480 END;
00490
00500 M←(L LSH 8)/Z;
00510
00520 Q←Z LSH -3;
00530 COMMENT IF M≥64 THEN IF M<192 THEN P←P+Q;
00540 P←P+Q;
00550 PAD[N]←(M LSH 27)+(Q LSH 6)+N;
00560 M←M LSH -5; IF M>7 THEN M←7;
00570 SUM←POINT(30,TABLES[I+N],29);
00580 TABLES[I+N]←(LDB(SUM) LSH 6)+(M LSH 3);
00590 END;
00600
00610 FOR J←0 STEP 1 UNTIL 62 DO
00620 FOR K←J+1 STEP 1 UNTIL 63 DO
00630 IF (PAD[J]>PAD[K]) THEN BEGIN
00640 Z←PAD[J]; PAD[J]←PAD[K]; PAD[K]←Z; END;
00650
00660 K←P/8; L←0; M←0;
00670
00680 FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00690 PLACE←POINT(6,PAD[J],35);
00700 N←LDB(PLACE);
00710 SUM←POINT(33,TABLES[I+N],32);
00720 P←POINT(8,PAD[J],8);
00730 COMMENT IF P<64 THEN TABLES[I+N]←(LDB(SUM) LSH 3)
00740 COMMENT ELSE IF P≥192 THEN TABLES[I+N]←(LDB(SUM) LSH 3)+7
00750 COMMENT ELSE BEGIN
00760 TABLES[I+N]←(LDB(SUM) LSH 3)+L;
00770 SUM←POINT(20,PAD[J],29);
00780 M←M+LDB(SUM);
00790 IF M>K THEN BEGIN
00800 M←M-K; L←L+1; IF L≥8 THEN L←7; END;
00810 COMMENT END;
00820 END;
00830
00840 END;
00850
00860 END "UPDATE";
00870